module.exports = {
    // 使用插件
    // "plugins": ["a-plugin"],
    // 环境
    env: {
        browser: true,
        node: true,
        es6: true,
    },
    parserOptions: {
        // 使用的版本 es6
        ecmaVersion: 'latest', // 使用最新的稳定版
        sourceType: 'module', //  ECMAScript 模块
        ecmaFeatures: {
            jsx: true, // 使用 jsx
        },
    },

    // 规则
    rules: {
        // 报错
        // 死循环
        'for-direction': ['error'],
        // get 语句没有 return
        'getter-return': ['error'],
        // Promise rej, res 不可以是 async 函数
        'no-async-promise-executor': ['error'],
        // 不可以和 -0 比较
        'no-compare-neg-zero': ['error'],
        // 不可以在 if() 有赋值操作,always, except-parens 可以用 (a=1)括号包裹
        'no-cond-assign': ['error'],
        // 禁止在循环中出现 await ,可以用 Promise.all()
        'no-await-in-loop': ['error'],
        // 不可以出现多个同名的参数
        'no-dupe-args': ['error'],
        // 禁止对象字面量中出现重复的 key
        'no-dupe-keys': ['error'],
        // 禁止出现重复的 case 标签
        'no-duplicate-case': ['error'],
        // 禁止不必要的布尔转换
        'no-extra-boolean-cast': ['error'],
        // 禁止对 function 声明重新赋值
        'no-func-assign': ['error'],
        // 禁止对 function 声明重新赋值
        'no-unexpected-multiline': ['error'],
        // 禁止对 function 声明重新赋值
        'no-unsafe-negation': ['error'],
        // 禁止不规则的空白
        'no-irregular-whitespace': [
            'error',
            {
                skipComments: true,
                skipTemplates: true,
            }
        ],

        // 可以给格式化的
        // 对象结尾 有 , 其他忽略
        'comma-dangle': [
            'error',
            {
                arrays: 'never',
                objects: 'always',
                imports: 'never',
                exports: 'never',
                functions: 'never',
            }
        ],
        // 禁止冗余的括号
        'no-extra-parens': [
            'error',
            'all',
            {
                ignoreJSX: 'all',
                returnAssign: false,
                conditionalAssign: false,
            }
        ],
        // 禁用不必要的分号
        'no-extra-semi': ['error'],
        // 要求遵循大括号约定
        'curly': ['error'],
        // 要求使用 === 和 !==
        'eqeqeq': ['error'],
        // 禁止使用短符号进行类型转换
        'no-implicit-coercion': ['error'],
        // 禁止出现多个空格
        'no-multi-spaces': ['error', { ignoreEOLComments: false, }],
        // 禁止重新声明变量
        'no-redeclare': ['error'],
        // 需要把立即执行的函数包裹起来
        'wrap-iife': ['error'],
    },
};
